package main

import (
	"fmt"
	"go_rpc/gorpc/handler"
	"go_rpc/gorpc/server_proxy"
	"net"
	"net/rpc"
)

func main() {
	// 1. 实例化sever
	listener, _ := net.Listen("tcp", "localhost:25555")
	fmt.Println("listener", listener)
	defer listener.Close()
	// 2. 注册处理逻辑handler
	// 3. 启动服务
	server_proxy.RegisterHelloService(&handler.HelloService{})
	for {
		conn, err := listener.Accept()
		if err != nil {
			fmt.Println("accept error:", err)
			continue
		}
		go rpc.ServeConn(conn)
	}

}

/**
	反思:
	 1. 服务端注册方法 按名字注册吗？按照鸭子类型注册(接口注册)-只要实现了这个方法的接口体，都可以使用

     2. 客户端调用方法 客户端代理 - 动态生成调用 - 客户端调用这个方法
*/
